# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
import pymysql
import pandas as pd


class MyScrapyPipeline:
    def __init__(self):
        self.df = pd.DataFrame(columns=['index', 'title', 'publish',
                                        'score', 'selogen', 'source', 'type'])
        self.conn = pymysql.Connect(
            host='localhost',
            port=3306,
            user='root',
            password='1234',
            database='scrapy_test',
            cursorclass=pymysql.cursors.DictCursor
        )
        self.cursor = self.conn.cursor()
        self.count = 1

    def process_item(self, item, spider):   # 这是一个用于处理爬虫抓取到的item的方法，通常用于数据的清洗、验证和存储
        # 针对不同的爬虫进行不同的保存处理，对应spiders/poetry.py 中的name
        # 如果spider的name是'qcwy_spider'，则执行下面的插入数据库操作
        if spider.name == 'qcwy_spider':
            # 定义SQL插入语句，将item中的数据插入到qcwy数据表中
            sql = """insert into qcwy (name,price,tags,cname,cd1,cd2,bas,key_word,sales)
                             values (%s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            self.cursor.execute(sql, (
                item.get('name', ''),  # 获取name字段，如果不存在则使用空字符串作为默认值
                item.get('price', ''),
                item.get('tags', ''),
                item.get('cname', ''),
                item.get('cd1', ''),
                item.get('cd2', ''),
                item.get('base', ''),
                item.get('key_word', ''),
                item.get('sales', '')
            ))
            self.conn.commit()
        return item



    def close_spider(self, spider):
        self.cursor.close()
        self.conn.close()


